GROOVY-12069: introduce methodhandles in dgm wrappers#2598
Conversation
…re/load, add handling of Generated method in Selector for methods
✅ All tests passed ✅Test Summary
🏷️ Commit: f962b5c Learn more about TestLens at testlens.app. |
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.
| Benchmark suite | Current: f962b5c | Previous: 61740ec | Ratio |
|---|---|---|---|
org.apache.groovy.bench.dispatch.CallsiteBench.dispatch_8_megamorphic_java |
2642.11111669814 ops/ms |
1481.817969808963 ops/ms |
1.78 |
This comment was automatically generated by workflow using github-action-benchmark.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #2598 +/- ##
==================================================
+ Coverage 68.3052% 68.5976% +0.2924%
- Complexity 33399 34435 +1036
==================================================
Files 1518 1518
Lines 126879 129952 +3073
Branches 23005 23586 +581
==================================================
+ Hits 86665 89144 +2479
- Misses 32529 32985 +456
- Partials 7685 7823 +138
🚀 New features to boost your workflow:
|
|
JMH summary — classic (commit
|
| Group | Speedup | n |
|---|---|---|
| bench | 1.235 × | 26 |
| core | 1.039 × | 77 |
| grails | 0.975 × | 80 |
Baseline: dev/bench/jmh/<part>/classic/data.js on gh-pages, trailing 90 days. Daily dashboard · Per-suite raw data
JMH summary — indy (commit
|
| Group | Speedup | n |
|---|---|---|
| bench | 0.978 × | 26 |
| core | 1.000 × | 77 |
| grails | 1.052 × | 80 |
Baseline: dev/bench/jmh/<part>/indy/data.js on gh-pages, trailing 90 days. Daily dashboard · Per-suite raw data



This change adds a target method handle in the dgm helper classes. Invokedynamic then does not have to use the path of a generic meta method invocation, but can invoke the target of the dgm helper directly. For this bytecode generation changes are done in the dgm converter, as well as changes in indy method handling for that case. The change contains also a cleanup of some warnings, a test for the dgm converter changes and some cleanup/refactoring in the Selector